Kibanaの使い方 〜グラフ化①〜【Amazon Elasticsearch Service】
どうも!大阪オフィスの西村祐二です。
本ブログは下記ブログの続きになります。
(2017/12/26時点の内容となります)
前回は環境構築とデータの準備まで完了しました。
今回から実際にKibanaを使ってデータを可視化していきたいと思います。
公式ドキュメントの内容にそって可視化の基礎を学んでいきます。
環境
- サービス:Amazon Elasticsearch Service
- Elasticsearch:6.0
- Kibana:6.0.1
Index Patternの定義
Elasticsearchに読み込まれたデータの各セットには、Index Patternがあります。それを定義します。
前回取り込んだデータ、シェイクスピアデータセットにはshakespeare
という名前のインデックスがあり、アカウントデータセットにはbank
という名前のインデックスがあります。_index pattern_
は、複数のインデックスに一致するオプションのワイルドカードを持つ文字列です。
Index Patternを定義するときは、そのパターンに一致するインデックスがElasticsearchに存在しなければなりません。そのインデックスには、データが含まれている必要があります。
▼シェイクスピアデータセットのIndex Patternとしてshakes*
を指定し、Create をクリックしてIndex Patternを定義します。
▼アカウントデータセットも同様の手順でIndex Patternをba*
として定義します。
▼Logstashデータセットには時系列データが含まれるため、Time Filter field nameを@timestamp
としてIndex Patternを定義します。
データの検出
左のメニューの「Discover」をクリックします。
クエリバーで、 Elasticsearchクエリを入力して、データを検索できます。
Discoverで結果を調べて、Visualizeで保存した結果のビジュアライゼーションを作成する流れになります。
クエリはより大きい(>)、より小さい(<)、または等しい(=)などの比較演算子を使用できます。論理演算子AND、OR、およびNOT(すべて大文字)で要素をつなぐことができます。
ドキュメントに記載の下記クエリを試してみます。
このクエリは、残高が47,500より多い0~99の口座番号をすべて返します。
account_number:<100 AND balance:>47500
サンプルのアカウントデータを検索し、5つの結果が返ってきていることがわかります。
ここままでは、すこし見づらいですね。
例えば、検索でヒットした中から「年齢はどうなってるいるか」を知りたいとします。
そんなときは右の、「Available Fileds」の中の「Age」をクリックします。
ageに絞った値のみを表示してくれます。これで、目的のデータをすぐに確認することができます。
データの可視化
左のメニューの「Visualize」をクリックします。 ここから、グラフを作成していきます。
グラフ作成前に、どんなグラフを作成したいか考えましょう。
アカウントデータより口座の残高がわかるため、
金額毎の割合を可視化したいと思います。
データ確認
まず、口座残高の最大値を確認しておきます。
- 「Discover」から「ba*」のインデックス定義を選択
- 「Available Fields」から「balance」を選択
- balanceタブの▼をクリックしソート
最大が「49,989」であることがわかります。
ここから、グラフ表示する際のレンジ幅をどうするかあたりをつけます。
グラフ作成
では、可視化するためにグラフ作成していきます。
▼「Pie」という円グラフを作成するアイコンをクリックします。
▼インデックス定義は「ba*」を選択します。
▼「Split Slices」をクリックします。
▼各残高の範囲を設定し反映します。
- 「Aggregation」から範囲を指定する「Range」を選択します。
- 「Field」から残高情報の「balance」を選択します。
- 下記画像のように残高の範囲の指定します。
- 「Custom Label」に「口座残高」と入力します。
- 設定が完了したら「▶」をクリックしてグラフに反映します。
▼円グラフにマウスオーバーすると、値とCount数と割合が表示されます。
▼countの数値を表示させることもできます。
ここから「31,000 to 50,000」がもっとも割合が大きいことがわかります。
年齢情報をグラフに追加
口座残高の金額の割合がわかったので、次はその金額に含まれる人の年齢の割合を表示したいと思います。
▼バケットリストの下にある「Add sub-buckets」をクリックします。
▼年齢情報を設定します。
- 「Split Slices」をクリックします。
- 集約リストから「Terms」を選択します。
- フィールドリストから「age」を選択します。
- 「Custom Label」に「年齢」と入力します。
- 「▶」 をクリックしグラフに反映します。
金額に対する年齢の割合を表示することができました。
これより口座残高が「15000 to 30999」に該当する人で、年齢28の人が「25人で、22.94%」であることがわかります。
▼金額部分のグラフをクリックすると、その金額にフォーカスしたグラフになります。
グラフ保存
今回作成したグラフを保存します。
保存するには右上の「Save」をクリックします。
名前を「test-pie-chart」として保存します。
保存が完了したら、「Visualize」からいつでもグラフを確認することができます。
さいごに
いかがだったでしょうか。
Kibanaで基礎的なグラフを作成し表示してみました。
次は他のデータを使って違ったグラフ表示をしてみます。